# python中
class Student:  # 命名规范（不是规则）：一个或者多个单词组成，每个单词首字母大写，其余小写
    a = 'nendieer'  # 写在类里面的变量称为  类属性、】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】

    def __init__(self, name, age):
        self.name = name
        self.age = age  # self.name 称为实体属性    进行了一个赋值的操作，将局部变量的name的值赋给实体属性

    def b(self):  # def定义在了类里 所以是方法 不是函数               #实例方法
        print('111')

    @staticmethod  # 注意缩进哦
    def c():  # 定义一个静态方法  用上面的staticmethod定义  静态方法里面不能写self   #静态方法
        print('222')

    @classmethod  # 类方法
    def d(cls):
        print('类方法')


print(id(Student), type(Student), Student)


# ————————————————————————————————————————————————————————————————————————
class Text1:
    def a(x):
        print(x)

    def b(self):
        print('调用了B方法')


textt = Text1
print(textt.a('444'))  # 调用类的方法     对象名.方法名

Text1.b(textt)  # 另一种方法的调用     感觉不太好用    类名.方法名(传递的对象)

# ——————————————————————————————————————————————————————————————————————————————————

# 类属性  类方法   静态方法
print(Student.a, 'over')  # 用了Student类里面的类属性    类名.属性名
stu1 = Student('张三', 20)
stu2 = Student('李四', 30)
print(stu1.a)
print(stu2.a)
Student.a = 'nange'
print(stu1.a)
print(stu2.a)
print('类方法的使用')
Student.d()
print('----------------------------------------------------')


# 动态绑定属性和方法
class Student1:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def eat(self):
        print(self.name + '在吃饭')


stu11 = Student1('zhangsan', 20)
stu12 = Student1('lisi', 40)
print('stu12动态绑定类别属性')
stu12.new_shuxing='乌拉'   #动态绑定类别属性   Student1类下面有两个对象 stu11   stu12   然后给stu12对象里面 单独设置了一个属性  stu11里面无的
print(stu11.name,stu11.age)
print(stu12.name,stu12.age,stu12.new_shuxing)



